From: Florian Müllner Date: Thu, 21 Nov 2019 22:40:02 +0000 (+0100) Subject: switcherPopup: Show immediately on second key press X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~781^2^2~391 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=9132063b877c8daf4eede22e98a6624402395334;p=gnome-shell.git switcherPopup: Show immediately on second key press We slightly delay showing the switcher popup to avoid flashing it briefly in the common case of quickly switching back-and-forth between two windows. However some users perceive this delay as slowness. Address this by showing the popup immediately when another key press is consumed (that is, a key like Tab is pressed). https://gitlab.gnome.org/GNOME/gnome-shell/issues/1928 --- diff --git a/js/ui/switcherPopup.js b/js/ui/switcherPopup.js index 85e962ef2..44228ec1b 100644 --- a/js/ui/switcherPopup.js +++ b/js/ui/switcherPopup.js @@ -139,15 +139,24 @@ var SwitcherPopup = GObject.registerClass({ GLib.PRIORITY_DEFAULT, POPUP_DELAY_TIMEOUT, () => { - Main.osdWindowManager.hideAll(); - this.opacity = 255; - this._initialDelayTimeoutId = 0; + this._showImmediately(); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._initialDelayTimeoutId, '[gnome-shell] Main.osdWindow.cancel'); return true; } + _showImmediately() { + if (this._initialDelayTimeoutId === 0) + return; + + GLib.source_remove(this._initialDelayTimeoutId); + this._initialDelayTimeoutId = 0; + + Main.osdWindowManager.hideAll(); + this.opacity = 255; + } + _next() { return mod(this._selectedIndex + 1, this._items.length); } @@ -167,8 +176,10 @@ var SwitcherPopup = GObject.registerClass({ this._disableHover(); - if (this._keyPressHandler(keysym, action) != Clutter.EVENT_PROPAGATE) + if (this._keyPressHandler(keysym, action) != Clutter.EVENT_PROPAGATE) { + this._showImmediately(); return Clutter.EVENT_STOP; + } // Note: pressing one of the below keys will destroy the popup only if // that key is not used by the active popup's keyboard shortcut